package 牛客;

import java.util.ArrayList;
import java.util.Scanner;

public class 按螺旋的顺序返回矩阵中的所有元素 {
    /*
    写出一个程序，接受一个字符串，然后输出该字符串反转后的字符串。（字符串长度不超过1000）
    示例1
       输入    "abcd"
       返回值  "dcba"
    */
    public String solve (String str) {
        String reverse = new StringBuffer(str).reverse().toString();
        return reverse;
    }

    /*
    题目描述
        给定一个m x n大小的矩阵（m行，n列），按螺旋的顺序返回矩阵中的所有元素。
    示例1
        输入     [[1,2,3],[4,5,6],[7,8,9]]
        返回值   [1,2,3,6,9,8,7,4,5]
    */
    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        ArrayList<Integer> list = new ArrayList<>();
        int minX = 0;
        int minY = 0;
        int maxX = 0;
        int maxY = 0;
        if(matrix.length == 0)
            return list;
        else{
            maxX = matrix[0].length - 1;  //X轴最大值
            maxY = matrix.length - 1;     //Y轴最大值
        }
        while(minX <= maxX && minY <= maxY) {
            for (int i = minX; i <= maxX; i++) {
                list.add(matrix[minY][i]);
            }
            minY++;
            if(minY > maxY) break;
            for (int i = minY; i <= maxY; i++) {
                list.add(matrix[i][maxX]);
            }
            maxX--;
            if(minX > maxX) break;
            for (int i = maxX; i >= minX; i--) {
                list.add(matrix[maxY][i]);
            }
            maxY--;
            for (int i = maxY; i >= minY; i--) {
                list.add(matrix[i][minX]);
            }
            minX++;
        }
         return list;
    }

    public static void main(String[] args) {
        按螺旋的顺序返回矩阵中的所有元素 d = new 按螺旋的顺序返回矩阵中的所有元素();
        int[][] matrix = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
        ArrayList<Integer> list = d.spiralOrder(matrix);
        for (Integer i:list) {
            System.out.print(i + " ");
        }


        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(d.solve(str));
    }
}
